import request from '@/utils/request'
import CryptoUtil from '@/utils/crypto'
// import

/**
 * 申请访问数据（加密版）
 * @param {Object} data - 原始请求数据（JSON 对象）
 * @param {String} serverPublicKey - 后端服务器公钥（Base64 或 PEM）
 */
export async function requestData(data, serverPublicKey) {
  try {
    //生成随机 AES 对称密钥
    const aesKey = await CryptoUtil.generateAESKeyBase64()

    //将 data 转成 JSON 字符串，并用 AES 加密
    const jsonData = JSON.stringify(data)
    const encryptedData = await CryptoUtil.encryptAES(jsonData, aesKey)

    //使用服务器公钥加密 AES 密钥
    const encryptedKey = await CryptoUtil.encryptRSA(aesKey, serverPublicKey)

    // 将加密后的对称密钥与加密后的数据发送到后端
    return request({
      url: '/did/access/request',
      method: 'post',
      data: {
        encryptedKey,   // RSA 加密后的 AES 密钥
        encryptedData,  // AES 加密后的业务数据
      }
    })
  } catch (err) {
    console.error("加密数据失败:", err)
    throw err
  }
}


// 访问设备
export function accessDevice(deviceId) {
  return request({
    url: `/api/dc/device/access/${deviceId}`,
    method: 'get'
  })
}
